package com.yuqian.JavaSe.leetcode.easy;
/**
 * Given two strings s and t, write a function to determine if t is an anagram of s.

For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.

Note:
You may assume the string contains only lowercase alphabets.
 * @author yuqian
 *
 *判断所给的两个字符串含有的每个小写字母的个数是否相等
 */
public class ValidAnagram {
	public boolean isAnagram(String s, String t) {
        if(!(s!=null&&t!=null)){
            return false;
        }else{
           char[] sc=s.toCharArray(); 
           char[] tc=t.toCharArray();
           if(sc.length==tc.length){
        	   //构造一个大小为26的整形数组
        	   //s中包含一个字母，该字母对应的数组位置值+1
        	   //t中包含一个字母，该字母对应的数组位置值-1
        	   //最后判断数组是否是全0
               int[] letters =new int[26];
               for(int i=0;i<sc.length;i++){
                   letters[sc[i]-97]++;
                   letters[tc[i]-97]--;
               }
               boolean flag= true;
               for(int j=0;j<26;j++){
                   if(letters[j]!=0){
                      flag =false;
                      break;
                   }
               }
               return flag;
           }else{
               return false;
           }
        }
        
        //思路一样，但是更简洁的写法
        /*if (s.length() != t.length()) return false;
        int[] count = new int[26];
        for (char c : s.toCharArray()) {
            count[c - 'a']++;
        }
        for (char c : t.toCharArray()) {
            count[c - 'a']--;
            if (count[c - 'a'] < 0) return false;
        }
        return true;*/
    }
}
